home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / textfile / mac_faqs / obj_c / faq < prev    next >
Internet Message Format  |  1995-01-30  |  12KB

  1. Xref: bloom-picayune.mit.edu comp.lang.objective-c:1010 news.answers:4553
  2. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!olivea!sun-barr!cs.utexas.edu!bcm!aio!fdr!shirley
  3. From: shirley@fdr.uucp (Bill Shirley [CSC])
  4. Newsgroups: comp.lang.objective-c,news.answers
  5. Subject: Objective-C  Frequently Asked Questions
  6. Summary: Answers to Frequently Asked Questions asked about the Objective-C
  7.     programming language, an Object Oriented extension to the C.
  8.     Please read this before posting to comp.lang.objective-c.
  9. Message-ID: <objc_724237201@fdr.jsc.nasa.edu>
  10. Date: 13 Dec 92 09:00:31 GMT
  11. Expires: 26 Jan 1993 09:00:01 GMT
  12. Sender: news@aio.jsc.nasa.gov (USENET News System)
  13. Followup-To: comp.lang.objective-c
  14. Organization: nasa-jsc
  15. Lines: 331
  16. Approved: news-answers-request@MIT.Edu
  17. Supersedes: <objc_721077644@fdr.jsc.nasa.edu>
  18.  
  19. Archive-name: Objective-C/faq
  20. Last-modified: 1992/10/09 
  21. Version: 1.0
  22.  
  23.  
  24.                 Answers to
  25.             FREQUENTLY ASKED QUESTIONS
  26.                 concerning    
  27.                    Objective-C
  28.  
  29.  
  30.  
  31. Clarification: I have used the word `ObjC' for `Objective-C', the proper
  32.     and official name for the language discussed within, throughout
  33.     this file.  Is is simply a time and space saver.
  34.  
  35.  
  36.  
  37. Questions & Answers
  38. ~~~~~~~~~~~~~~~~~~~
  39. Q1. What is Objective-C?
  40.  
  41.  A1. An object oriented (OO) computer language based on the C language and
  42.     influenced by SmallTalk.  It was designed by The Stepstone Corp. (and
  43.     is a Trademark of Stepstone) and includes many of the OO things that
  44.     make Smalltalk the "language to learn OOP with", and many of the
  45.     great things about C that make it highly portable and very optimizable.
  46.     It is NOT C++.
  47.  
  48.  
  49. Q2. Who makes an Objective-C compiler, what does it cost, how do I order?
  50.  
  51.  A2.1    The Stepstone Corporation
  52.     (203) 426-1875 - (800) BUY-OBJEct voice / (203) 270-0106 fax
  53.     75 Glen Road
  54.     Sandy Hook, CT 06482
  55.  
  56.     compilers and runtime
  57.  
  58.         IBM RISC System/6000 w/ AIX
  59.         Sun 3, 4, SPARCstations w/ SunOS
  60.         HP9000/300,400,700,800 w/ HP-UX
  61.         DEC Stations w/ ULTRIX
  62.         Data General AViiON w/ DG/UX
  63.         SCO UNIX SYS V
  64.         PS/2 w/ AIX or OS/2
  65.         PC-AT w/ MS-DOS
  66.         VAX w/ VMS
  67.               MIPS
  68.          NeXT
  69.               Macs with MPW (Mac Programmers Workshop)
  70.  
  71.     class libraries available for a subset of the above
  72.  
  73.  A2.2    NeXT, Inc.
  74.  
  75.         Comes bundled with the extended OS release.
  76.         (NeXTSTEP 3.0 - $295 on CD ROM) shipped Sept 92
  77.         (NeXTSTEP '486 - $995) intended Q4 92
  78.  
  79.  A2.3    GNU Project
  80.  
  81.         Freely available
  82.         GNU Experimental Tape 
  83.         GCC 2 (the GNU C/C++/ObjC Compiler with many new
  84.             features - doesn't include runtime - yet)
  85.         prep.ai.mit.edu (18.71.0.38) pub/gnu/gcc-2.0.tar.Z
  86.         (See sites at end of file)
  87.  
  88.  
  89.  
  90.  
  91. Q3. Does GNU's gcc `do' Objective-C?
  92.  
  93.  A3. Didn't you read the above answer: It does as of release 2.0,
  94.     but does not initially include the runtime system required
  95.     to use ObjC.  A runtime has been completed and donated to
  96.     the project.  It is currently (Sept 92) undergoing testing
  97.     and some rewriting.
  98.     Reports are: On the NeXT, which has a runtime system, programs
  99.     compiled with gcc 2.0 (as available on the net) run when linked
  100.     to NeXT's runtime library.
  101.     A runtime has been completed and donated to the project.  It is
  102.     currently (Sept 92) undergoing testing and some rewriting.
  103.     A group has formed to help develop a library of Objective-C
  104.     classes to be distributed freely by the GNU project.
  105.  
  106.  
  107. Q4. What books concerning Objective-C are available?
  108.  
  109.  A4.1
  110.     Object Oriented Programming: An Evolutionary Approach
  111.     Author:        Brad J. Cox (, Andrew J. Novobilski second edition)
  112.     Publisher:    Addison-Wesley
  113.     ISBN#:        0-201-10393-1    August, 1986
  114.     ISBN#:        0-201-54834-8    1991
  115.     two editions
  116.  
  117.  A4.2
  118.     Objective-C: Object Oriented Programming Techniques
  119.     Authors:    Lewis J. Pinson, Richard S. Wiener
  120.     Publisher:    Addison-Wesley, 1991
  121.     ISBN#:        0-201-50828-1
  122.     Abstract:    Includes many examples, discusses both Stepstone's
  123.             and NeXT's versions of Objective-C, and the (minor)
  124.             differences between the two.
  125.  
  126.  A4.3
  127.     An Introduction to Object-Oriented Programming
  128.     Author:        Timothy Budd
  129.     Publisher:    Addison-Wesley
  130.     ISBN#:        0-201-54709-0
  131.     Abstract:    An intro to the topic of OOP, as well as a comparison
  132.             of C++, Objective-C, Smalltalk, and Object Pascal
  133.  
  134.  A4.4
  135.     NeXTSTEP Programming  Step 1: Object-oriented applications
  136.     Availablility:    Fall, 1992
  137.     Authors:    Simson L. Garfinkel, Michael K. Mahoney
  138.     Publisher:    Springer-Verlag, 1992    (800)SPR-INGE
  139.     Abstract:    It's updated to discuss NeXTSTEP 3.0 features
  140.             (Project Builder, new development environment)
  141.             but doesn't discuss 3DKit or DBKit
  142.  
  143.  
  144. Q5. What is the difference between Objective-C and C?
  145.  
  146.  A5. ObjC is a superset of the ANSI C standard.  It is an object oriented 
  147.     language that has extensions similar to Smalltalk applied to C.
  148.     It includes a few more key words and constructs.
  149.     New Keywords:
  150.      @interface
  151.      @implementation
  152.      @public
  153.      @selector
  154.     Constructs:
  155.      [instance  method: param];  <- sending a message to an instance
  156.     Types:
  157.      id    - basically a generic pointer to an object
  158.  
  159.     [****************]
  160.  
  161.  
  162. Q6. What is the difference between Objective C and C++?
  163.  
  164.  A6. C++ has operator overloading, ObjC doesn't.  Some consider this
  165.     to be 'syntactic sugar', and it is, but it can be a quite
  166.     handy bit of syntactic sugar.
  167.      C++ has multiple inheritance, ObjC doesn't.  There is much
  168.     debate over the desirability and value of this.  There are
  169.     several ways to 'get around' this in ObjC.
  170.      The run-time binding mechanism differ quite a bit in their functionality.
  171.     (Details?? [***])
  172.  
  173.  
  174. Q7. What is the difference between NeXT's, Stepstone's and GNU's
  175.     versions of Objective C?
  176.  
  177.  A7. NeXT has defined and distributed its own class libraries, which
  178.     are very integral to the NeXTstep environment.
  179.      NeXT also extended Stepstones definition of the language to include
  180.     new constructs, such as protocols, which are touted to deal with
  181.     some aspects of multiple inheritance.
  182.      NeXT's implementation does *not* support static binding, Stepstone's
  183.     does, and GNU's (does?/doesn't?).
  184.      Stepstone has a standard set of class libraries that work across
  185.     all supported machines.
  186.      GNU gcc (C/C++/ObjC) does not have a runtime system for
  187.     resolving message passing, or include any classes. (yet)
  188.      The Object (root) class of NeXT's and Stepstone's are slightly
  189.     different; there are several Object methods and runtime C
  190.     functions that are not part of Stepstone's.
  191.      NeXT (and GNU?) supports Categories, Stepstone doesn't.
  192.      NeXT has a native language debugger, Stepstone and GNU don't.
  193.      NeXT (3.0) supports Protocols and forward declarations of classes,
  194.     Stepstone (does/n't?), GNU (does/n't?).
  195.      [****************]
  196.  
  197.  
  198. Q8. What are some of the common problems of the language and how can
  199.     I work around them? (forward declarations of classes, class variables)
  200.  
  201.  A8.1 There is no innate multiple inheritance (of course some see this as a
  202.     benefit).
  203.       To get around it you can create a compound class ( a class with
  204.     instance variables that are /id/s of other objects.  They can
  205.     specifically redirect messages to any combination of the
  206.     objects they are compounded of. (It isn't *that* much of a 
  207.     hassle and you have direct control over the inheritance
  208.     logistics)
  209.       Protocols address this to some extent. [***]
  210.       [** how does Delegation fit in here? **]
  211.  
  212.  A8.2 ObjC has no class variables.
  213.       You can get around this by defining a static variable in the .m
  214.     file, and defining access methods for it.  This is actually a
  215.     more desirable way of designing a class hierarchy, because it
  216.     allows subclasses shouldn't access superclass storage (this would
  217.     cause the subclass to break if the superclass was reimplemented),
  218.     and allows the subclass to override the storage (if the classes
  219.     access all their own variables via methods)
  220.  
  221.  A8.3 problem X [****************]
  222.  
  223.  
  224. Q9. What class libraries are available for Objective C?
  225.  
  226.  A9.  See the related FAQ file -  _Objective C - a matter of Class_
  227.  
  228.  
  229. Q10.  Are there any FTP sites with Objective C code?  Where?
  230.  
  231.  A10.  Yes.
  232.     There are NeXT related sites at
  233.      sonata.cc.purdue.edu
  234.      cs.orst.edu
  235.     And non-NeXT related sites at
  236.      ?
  237.  
  238.  
  239. Q11.  I'm an emacs junkie.  Are there any .el files somewhere to support
  240.     Objective-C?
  241.  
  242.  A11.  Yes.  Try sonata.cc.purdue.edu /pub/next/misc/objc.tar.Z
  243.  
  244.  
  245. Q12.  So show me a program, a simple example.
  246.  
  247.  A12.  See the companion file "A S[ia]mple Objective-C Program" or get
  248.     all of the code from music.sie.arizona.edu:pub/ObjC/Sample.tar.Z
  249.  
  250.  
  251. Q13.  What are Protocols?
  252.  
  253.  A13.  Protocols are an addition to (currently only NeXT's 3.0+ version of)
  254.     ObjC that allow you to organize related methods into groups
  255.     that form high-level behaviors.  This gives library builders
  256.     a tool to identify sets of standard protocols, independent of
  257.     the class hierarchy.  Protocols provide language support for
  258.     the reuse of design, whereas classes support the reuse of code.
  259.     Well designed protocols can help users of an application
  260.     framework when learning or designing new classes.  Here is a
  261.     simple protocol definition for archiving objects:
  262.  
  263.         @protocol Archiving
  264.         - read:(NXTypedStream *)stream;
  265.         - write:(NXTypedStream *)stream;
  266.         @end
  267.  
  268.     Once defined, protocols can be referenced in a class interface
  269.     as follows:
  270.  
  271.         // MyClass inherits from Object and
  272.         // conforms to the Archiving protocol
  273.         @interface MyClass : Object <Archiving>
  274.         @end
  275.  
  276.     Unlike copying methods to/from other class interfaces, any
  277.     incompatible change made to the protocol will immediately be
  278.     recognized by the compiler (the next time the class is
  279.     compiled).  Protocols also provide better type checking without
  280.     compromising the flexibility of untyped, dynamically bound objects.
  281.  
  282.         MyClass *obj1 = [MyClass new];
  283.  
  284.         // legal, obj2 conforms to the Archiving protocol.
  285.         id <Archiving> obj2 = obj1;
  286.  
  287.         // illegal, obj1 does not conform to the TargetAction
  288.         // protocol.
  289.         id <TargetAction> obj3 = obj1;
  290.  
  291.  
  292.         
  293.  
  294.  
  295.  
  296. Terminology
  297. ~~~~~~~~~~~
  298. C:        A programming language.
  299. FTP:        File Transfer Protocol.
  300. GNU:        A project making freely available software.
  301. message:    A "call" to an implementation of a method
  302. method:        An implementation of an ObjC "function"
  303. factory method:    A method which creates a new instance of a class
  304. class method:    A method which acts on or with the whole of a class rather
  305.         than an instance of a class.  Often used interchangeably 
  306.         with _factory method_, but there is a subtle difference.
  307. instance method:A method witch acts on or with a specific instance of a
  308.         class.
  309. OOP:        Object Oriented Programming
  310. ObjC:        An abbreviation of Objective-C
  311. Object:        The base {class} of Objective-C.
  312. Objective-C:    An Object Oriented programming language extended from
  313.           the C language, and what this whole file is about.
  314.         It is also a registered trademark of The Stepstone
  315.         Corporation.
  316.  
  317.  
  318.  
  319.  
  320. ---
  321. All [**********] designate incompleteness of the FAQ.  If you have any
  322. questions, corrections, comment, suggestions pass them along.  I can be
  323. reached directly at <shirley@fdr.jsc.nasa.gov> or you can post to
  324. the news group (comp.lang.objective-c).
  325.  
  326. Disclaimer:  I am not related to any company or group mentioned above.
  327. This file was created to provide information to interested people, and
  328. not advertizing for anything listed above.
  329.  
  330. gnu ftp site, prep.ai.mit.edu:pub/gnu/etc/DISTRIB
  331.  (prep UK/Europe mirror) src.doc.ic.ac.uk (???)
  332.  (prep Netherlands mirror) ftp.win.tue.nl (131.155.70.100)
  333.  (prep UK mirror) src.doc.ic.ac.uk (146.169.3.7)
  334.  (prep Japan mirror) utsun.s.u-tokyo.ac.jp (133.11.11.11)
  335.  (Australian site) archie.au (IP number may change)
  336.  
  337.  
  338. My list of thanks has gotten a bit long, so instead of leaving
  339.  anyone out, I'll just say thanks to all who have given feedback.
  340. This information is what YOU make it.
  341. ---
  342. -- 
  343.  Bill Shirley
  344.  shirley@fdr.jsc.nasa.gov
  345. -- 
  346.     ``One lonesome body,        Bill Shirley
  347.       one lonesome song.        shirley@fdr.jsc.nasa.gov
  348.       No lonesome body,
  349.       no lonesome song.'' - throwing muses
  350.